// pages/login/login.js
import { toast } from '../../utils/extendApi'
import { reqLogin, reqUserInfo } from '../../api/user'
import { setStorage } from '../../utils/storage'
import { ComponentWithStore } from 'mobx-miniprogram-bindings'
import { userStore } from '../../stores/userStore'
import { debounce } from 'miniprogram-licia'

ComponentWithStore({
  // 让页面和Store对象产生关联
  storeBindings: {
    store: userStore,
    fields: ['token', 'userInfo'],
    actions: ['setToken', 'setUserInfo']
  },

  methods: {
    // 授权登录
    login: debounce(function () {
      // 获取用户临时登录code
      wx.login({
        success: async ({ code }) => {
          if (code) {
            // 获取临时登录凭证后，需要传递给开发者服务器
            const { data } = await reqLogin(code)
            // 登陆成功后，将服务器响应的自定义登录态存储到本地
            setStorage('token', data.token)
            // 将自定义登录态存储到Store对象中
            this.setToken(data.token)
            // 获取用户信息
            this.getUserInfo()
            // 返回我的页面
            wx.navigateBack()
          } else {
            toast({
              title: '授权失败，请重试'
            })
          }
        }
      })
    }, 500),

    // 获取用户信息
    async getUserInfo() {
      const { data } = await reqUserInfo()
      setStorage('userInfo', data)
      // 将用户信息存储到Store对象
      this.setUserInfo(data)
    }
  }
})
